/**
 * @param {number[][]} mat
 * @return {number[]}
 */
 var findDiagonalOrder = function(mat) {
  const h = mat.length, w = mat[0].length;
  const layer = new Array(h + w - 1).fill(0).map(_ => []);
  for(let i = 0; i < h; i++) {
    for(let j = 0; j < w; j++) {
      if((i + j) % 2 === 0) {
          layer[i + j].unshift(mat[i][j])
      } else {
          layer[i + j].push(mat[i][j]);
      }
    }
  }
  return layer.reduce((a, b) => [...a, ...b]);
};